package com.wc.alorithm_blue_bridge._数据结构.并查集.Q1135;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.HashMap;
import java.util.HashSet;

/**
 * @Author congege
 * @Description 蓝桥幼儿园
 * https://www.lanqiao.cn/problems/1135/learning/?page=1&first_category_id=1&sort=students_count&second_category_id=8
 * @Date Created in 2023/10/31-20:56
 */
public class Main {
    public static void main(String[] args) {
        HashMap<Integer, HashSet<Integer>> map = new HashMap<>();
        String yes = "YES";
        String no = "NO";
        Input sc = new Input();
        int n = sc.nextInt();
        int m = sc.nextInt();
        StringBuffer ans = new StringBuffer();
        while (m-- > 0) {
            int choose = sc.nextInt();
            int id1 = sc.nextInt();
            int id2 = sc.nextInt();
            boolean flg1 = map.containsKey(id1);
            boolean flg2 = map.containsKey(id2);
            HashSet<Integer> set;
            if (choose == 1) {
                // 四种情况
                // 1、两个都和其他的没有关系
                // 2、第一个有关系，第二个没有关系
                // 3、第一个没有关系，第二个有关系
                // 4、两个都有关系
                if (!flg1 && !flg2) {
                    set = new HashSet<>();
                    set.add(id1);
                    set.add(id2);
                    map.put(id1, set);
                    map.put(id2, set);
                } else if (flg1 && !flg2) {
                    set = map.get(id1);
                    set.add(id2);
                    map.put(id2, set);
                } else if (!flg1 && flg2) {
                    set = map.get(id2);
                    set.add(id1);
                    map.put(id1, set);
                } else {
                    set = map.get(id1);
                    HashSet<Integer> set2 = map.get(id2);
                    if (set.size() < set2.size()) {
                        HashSet<Integer> tmp = set;
                        set = set2;
                        set2 = tmp;
                    }
                    for (int id : set2) {
                        set.add(id);
                        map.put(id, set);
                    }
                }
            } else {
                if (!flg1 || !flg2) {
                    ans.append(no);
                } else {
                    if (map.get(id1) == map.get(id2)) {
                        ans.append(yes);
                    } else {
                        ans.append(no);
                    }
                }
                ans.append('\n');
            }
        }
        System.out.print(ans);
    }

    static class Input {
        StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

        public int nextInt() {
            try {
                in.nextToken();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return (int) in.nval;
        }
    }
}
